import { message } from 'ant-design-vue';
import router from '../router';

// 防止重复重定向的标记
let isRedirecting = false;

/**
 * 处理401未授权错误
 * 清除认证信息并重定向到登录页
 */
export const handle401Error = () => {
  if (!isRedirecting) {
    isRedirecting = true;
    
    console.log('🔒 检测到401未授权错误，准备重定向到登录页');
    
    // 显示用户友好的提示信息
    message.error('登录已过期，请重新登录');
    
    // 清除所有本地存储的认证信息
    localStorage.removeItem('tsToken');
    localStorage.removeItem('userInfo');
    localStorage.removeItem('user');
    localStorage.removeItem('token');
    
    // 使用Vue Router进行重定向
    router.push('/login').finally(() => {
      // 重置重定向标记，允许下次重定向
      setTimeout(() => {
        isRedirecting = false;
        console.log('🔄 重定向标记已重置');
      }, 1000);
    });
  } else {
    console.log('⚠️ 正在重定向中，跳过重复的401处理');
  }
};

/**
 * 检查是否正在重定向
 */
export const isRedirectingToLogin = (): boolean => {
  return isRedirecting;
};

/**
 * 手动触发登出
 */
export const logout = () => {
  console.log('🚪 手动登出');
  handle401Error();
};

/**
 * 检查认证状态
 */
export const checkAuthStatus = (): boolean => {
  const tsToken = localStorage.getItem('tsToken');
  const userInfo = localStorage.getItem('userInfo');
  
  if (!tsToken || !userInfo) {
    console.log('❌ 认证信息缺失');
    return false;
  }
  
  try {
    // 可以在这里添加token有效性检查
    // 例如检查token是否过期
    return true;
  } catch (error) {
    console.error('认证状态检查失败:', error);
    return false;
  }
};
